嗨,我对 Rails 很陌生,如果这很愚蠢,我很抱歉。我一直在寻找几个小时。甚至不知道该问什么。非常感谢您的帮助。
我正在尝试使用带有代码和描述的表格。然后是另一个包含代码的主表。加入这两个表,以便我可以按代码排序并提取描述。我似乎无法弄清楚提取描述的代码。
这是代码和描述迁移
create_table :sniffs do |t|
t.string "sniff_desc", :limit => 5
t.timestamps
end
这是主表迁移
create_table :lenders do |t|
t.integer "sniff_id"
t.timestamps
end
add_index("lenders", "sniff_id")
这些是模型
class Lender < ActiveRecord::Base
belongs_to :sniffs
scope :ranked, order("lenders.sniff_id ASC")
end
class Sniff < ActiveRecord::Base
has_many :lenders
end
嗅探表是
id sniff_desc
1 Great
2 OK
3 Bad
贷方表是
id sniff_id
1 2
2 2
3 3
这是我想不通的?对于特定的贷方实例,我如何获得 sniff_desc。例如,我在lender.id(2) 上,我想得到它的sniff_desc“OK”。
所以如果我是 Rails 控制台
lender = Lender.find(2)
lender.sniffs
我明白了
=> nil
我以为我会在嗅探中获得第二个记录。如果我输入这个
Sniff.find(lender.sniff_id).sniff_desc
我得到正确答案
=> "OK"
但是该代码似乎违背了建立一对多关系的整个目的。
我不理解一对多正确吗?或者我该怎么做才能解决这个问题?
非常感谢您的帮助。我觉得这个问题太简单了,所以我找不到其他人问它?!