Ruby on rails 在RubyonRails中,模型如何;“你有很多”;及;属于;是否使用主ID以外的其他字段?

Ruby on rails 在RubyonRails中,模型如何;“你有很多”;及;属于;是否使用主ID以外的其他字段?,ruby-on-rails,orm,activerecord,one-to-many,Ruby On Rails,Orm,Activerecord,One To Many,我正在尝试使用Rails 3从头开始构建一个简单的项目。通常,模型如下所示: class Student < ActiveRecord::Base has_many :awards end class Award < ActiveRecord::Base belongs_to :student end 在这种情况下,我们可以使用公司的符号,例如MSFT或GOOG来识别公司,而不是使用company.id。例如,在股票报价中,我们可以直接存储公司的符号,而不是使用compa

我正在尝试使用Rails 3从头开始构建一个简单的项目。通常,模型如下所示:

class Student < ActiveRecord::Base
  has_many :awards
end

class Award < ActiveRecord::Base
  belongs_to :student
end
在这种情况下,我们可以使用公司的符号,例如
MSFT
GOOG
来识别公司,而不是使用company.id。例如,在股票报价中,我们可以直接存储公司的符号,而不是使用
company.id
。在这种情况下,有没有办法在模型中指定它?


查看:主键和:外键选项除了Slawosz的答案外,关于非整数主键也与您的问题相关。依我看,只使用整数id会更容易,就像
Award
Student

Slawosz的答案是正确的。为了更详细(下次我再搜索它),它应该是这样的:

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

#stock_quote
belongs_to :company, :foreign_key => :symbol

你确定?似乎它们都需要
:primary\u key=>:symbol,:foreign\u key=>:symbol
我不完全确定(这肯定未经测试),但它的工作方式与StockQuote有一列:company\u id一样。Rails将自动获取公司的外键(company_id),然后使用PK:id进行加入。这是相互压倒的。如果有的话,我可以把它们颠倒过来。
#company
has_many :stock_quotes, :primary_key => :symbol

#stock_quote
belongs_to :company, :foreign_key => :symbol