我与2个表有一个一对一的关系如下:
型号:
class MediaType < ActiveRecord::Base
belongs_to :media
end
class Media < ActiveRecord::Base
has_many :media_types
end
为简单起见,SQL是:
create_table :media do |t|
t.string "name", :limit => 255
t.integer "media_type_id"
end
create_table :media_types do |t|
t.string "name", :limit => 255
end
插入与media_type_id相关的媒体记录后,如何撤回与媒体记录相关的media_type.name值?
我一味地试过:media = Media.find(1)
media.media_type_id.name
但那当然没有用。我的SQL可能不是Rails标准吗?
感谢任何帮助。
答案 0 :(得分:2)
如果您认为:media_type有多个媒体,但每个媒体只有一个media_type
您需要其他型号:
class MediaType < ActiveRecord::Base
has_many :medias
end
class Media < ActiveRecord::Base
belongs_to :media_type
end
并且
media = Media.find(1)
media.media_type.name
给你起名字
答案 1 :(得分:0)
似乎媒体has_many
media_types。
在这种情况下,您可以在media_id
表中创建media_types
列,但是您可以通过其他方式进行操作。
然后,您将通过
处理每个关系types = Media.media_types
获取媒体所拥有的media_types,以及
media = MediaType.media
获取mediatype所属的媒体。