开发者

Rails 3 one-to-many relationship question - how to return column name value

开发者 https://www.devze.com 2023-03-19 16:22 出处:网络
I have a one-tomany relationship with 2 tables as follows: Models: class MediaType < ActiveRecord::Base

I have a one-tomany relationship with 2 tables as follows:

Models:

class MediaType < ActiveRecord::Base 
  belongs_to :media
end

class Media < ActiveRecord::Base
  has_many :media_types
end

SQL for simplicity sake are:

create_table :media do |t|
  t.string "name", :limit => 255
  t.integer "medi开发者_如何学Pythona_type_id"
end

create_table :media_types do |t|
  t.string "name", :limit => 255
end

Once I insert a Media record relating to a media_type_id, how do I pull back the media_type.name value related to the media record?

I blindly tried:

media = Media.find(1)
media.media_type_id.name

But that didn't work of course. Is my SQL not Rails standards possibly?

Appreciate any help.


If you idea: media_type has many medias, but every media has only one media_type

You need another models:

class MediaType < ActiveRecord::Base 
  has_many :medias
end

class Media < ActiveRecord::Base
  belongs_to :media_type
end

And

media = Media.find(1)
media.media_type.name 

give you name


It seems that media has_many media_types.

In that case you would create media_id column in media_types table, but you did it other way around.

You will then approach each relation by

types = Media.media_types

to get the media_types that the Media has, and

media = MediaType.media 

to get the media that mediatype belongs to.

0

精彩评论

暂无评论...
验证码 换一张
取 消