Отображать имя столбца в представлении, если значение присутствует в столбце - Ruby on Rails - PullRequest
0 голосов
/ 06 сентября 2010

У меня есть столбец LTD в модели моей компании. После получения значения из модели, используя

Company.find

Если в столбце LTD присутствует какое-либо значение, мне нужно отобразить текст «Limited» в представлении. У меня есть много столбцов в модели, которые представлены в сокращенной форме, и когда значение присутствует, их полная форма отображается в представлении. Поэтому написание условий по представлению неосуществимо.

Я думал о том, подойдет ли написание пользовательского файла конфигурации rails, содержащего константы приложения. Но у меня нет количественной и качественной информации по этому вопросу.

Пожалуйста, помогите. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

Вы можете создать отдельную модель Abbreviation, с которой ваша модель Company может быть связана через модель соединения CompanyAbbreviation. Тогда будет одна запись таблицы соединений для каждого столбца в конкретной записи компании. Вместо того, чтобы иметь каждую аббревиатуру в виде столбца в таблице компаний, у вас будут вторичные ключи в таблице company_abbreviations со ссылкой на связанную компанию и записи сокращений.

Что-то вроде следующего:

class Company < ActiveRecord::Base
  has_many :company_abbreviations
  has_many :abbreviations, :through => :company_abbreviations
end

class Abbreviation < ActiveRecord::Base
  has_many :company_abbreviations
end

class CompanyAbbreviation < ActiveRecord::Base
  belongs_to :company
  belongs_to :abbreviation
end

class CreateAbbreviations < ActiveRecord::Migration
  def self.up
    create_table :abbreviations do |t|
      t.string :abbr
      t.string :description
    end

    add_index :abbreviations, :abbr
  end
end

class CreateCompanyAbbreviations < ActiveRecord::Migration
  def self.up
    create_table :company_abbreviations do |t|
      t.references :company
      t.references :abbreviation
    end

    add_index :company_abbreviations, :company_id
    add_index :company_abbreviations, :abbreviation_id
  end
end

В db/seeds.db вы можете предварительно заполнить таблицу abbreviations.

Вы добавляете новые ассоциации, подобные этому:

@company.company_abbreviations.create(:abbreviation => Abbreviation.find_by_abbr("LTD"))

По вашему мнению, вы можете ссылаться на расширенные столбцы сокращений следующим образом:

<% @company.abbreviations.each do |abbr| %>
  <%= abbr.description %>
<% end %>

Возможно, вы также захотите каким-то образом управлять порядком отображения, например, с помощью столбца сортировки в таблице соединений,

0 голосов
/ 16 сентября 2010

Это прекрасно работает для меня.

Я объявил глобальный хеш в config/environment.rb, который поддерживает список всех кратких и длинных форм имен столбцов, а в представлении я просто проверяю, имеет ли значениеприсутствует в столбце «Я ищу соответствующую пару значений ключа из глобального хэша и отображаю длинную форму».

Спасибо guyz за то, что вы нашли время помочь мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...