В Ruby on Rails как модели "has_many" и "own_to" могут использовать другое поле, отличное от основного идентификатора? - PullRequest
1 голос
/ 14 сентября 2010

Я пытаюсь создать простой проект с нуля с использованием Rails 3. Обычно модели выглядят так:

class Student < ActiveRecord::Base
  has_many :awards
end

class Award < ActiveRecord::Base
  belongs_to :student
end

и мы используем award.id и student.id для получения соответствующих записей.

Но что, если это

class Company < ActiveRecord::Base
  has_many :stock_quotes
end


class StockQuote < ActiveRecord::Base
  belong_to :company
end

В этом случае мы можем использовать символ компании, например MSFT или GOOG, чтобы идентифицировать компанию, вместо использования company.id. Например, в stock_quotes мы можем хранить символ компании напрямую вместо использования company.id. В таком случае, есть ли способ указать это в моделях?

Ответы [ 3 ]

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

В дополнение к ответу Славоша этот вопрос о нецелых первичных ключах также имеет отношение к вашему вопросу. ИМХО, было бы проще просто использовать целочисленные идентификаторы, как в примере Award и Student.

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

Славош имеет право на ответ.Чтобы быть многословным (и в следующий раз я буду искать это), это должно быть так:

#company
has_many :stock_quotes, :primary_key => :symbol

#stock_quote
belongs_to :company, :foreign_key => :symbol
1 голос
/ 14 сентября 2010
...