在 Ruby on Rails 中,模型如何“has_many”?和“属于”使用主 ID 以外的其他字段?

发布于 2024-09-24 00:12:13 字数 609 浏览 4 评论 0原文

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

class Student < ActiveRecord::Base
  has_many :awards
end

class Award < ActiveRecord::Base
  belongs_to :student
end

并且我们使用 award.idstudent.id 来获取相应的记录。

但如果是的话呢?

class Company < ActiveRecord::Base
  has_many :stock_quotes
end


class StockQuote < ActiveRecord::Base
  belong_to :company
end

在这种情况下,我们可以使用公司的符号,例如 MSFTGOOG 来标识公司,而不是使用company.id。例如,在stock_quotes中,我们可以直接存储公司的代码,而不是使用company.id。在这种情况下,有没有办法在模型中指定它?

I am trying building a simple project from scratch using Rails 3. Usually, the models are like:

class Student < ActiveRecord::Base
  has_many :awards
end

class Award < ActiveRecord::Base
  belongs_to :student
end

and we use the award.id and student.id to get the corresponding records.

But what if it is

class Company < ActiveRecord::Base
  has_many :stock_quotes
end


class StockQuote < ActiveRecord::Base
  belong_to :company
end

In this case, we can use the symbol of the company, such as MSFT or GOOG to identify the company, instead of using the company.id. For example, in stock_quotes, we can store the symbol of the company directly instead of using company.id. In this case, is there a way to specify it in the models?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

感悟人生的甜 2024-10-01 00:12:13

除了 Slawosz 的回答之外,这个关于非整数主键的问题也与您的问题相关。恕我直言,仅使用整数 id 会更容易,例如 AwardStudent 的示例。

In addition to Slawosz' answer, this question about non-integer primary keys is also relevant to your question. IMHO, it would be easier to just use integer id's like in the example of Award and Student.

芸娘子的小脾气 2024-10-01 00:12:13

Slawosz 的答案是正确的。详细一点(下次我搜索这个时)应该是这样的:

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

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

Slawosz has the answer right. To be verbose (and for the next time I search this) it should be like this:

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

#stock_quote
belongs_to :company, :foreign_key => :symbol
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文