我写了以下课程:
class Occupation < ActiveRecord::Base
has_many :pref_labels
has_many :cv_occupations
has_many :cvs, :through => :cv_occupations
validates_uniqueness_of :uri
# This function will return the specified label for the given language.
def label(language = Language.find_or_create_by_code(:en))
self.pref_labels.where("language_id = #{language.id}")
end
end
class PrefLabel < ActiveRecord::Base
belongs_to :language
belongs_to :concept
belongs_to :skill
belongs_to :occupation
validates_uniqueness_of :value, :scope => [:language_id, :value]
validates_uniqueness_of :language_id, :scope => [:language_id, :value]
end
在我看来,我称之为:%td = occupation.label(@language) 但这会返回错误:
undefined method `value' for #<ActiveRecord::Relation:0x80c8368>
如何获取所返回的actuall对象而不是关系?我知道这与延迟加载有关....
答案 0 :(得分:6)
更改
self.pref_labels.where("language_id = #{language.id}")
要
self.pref_labels.where("language_id = #{language.id}").all #or .first if you only one the first one