2011-02-11 3 views
0

Я играл с настройкой разных отношений в течение нескольких часов, и я не уверен, как сделать отношения has_many с тем, что я использую. Не уверен, что это просто именование конфликтов, или я просто не понимаю.Confused on setup has_many relationship

Вот мои таблицы баз данных:

show_names (table name): 
id 
show_id 
name 

shows (table name): 
id 
length 
synopsis 
number_of_episodes 
status 

Таким образом, каждое шоу имеет много возможных названий. Поэтому я хочу, чтобы настроить отношения has_many, так что я могу назвать что-то вроде:

Show.all.shownames[0].name 

Это даст мне имя.

Вот мои образцы кода для моих моделей и его, где я думаю, что я испортил.

class ShowName < ActiveRecord::Base 
    has_many :shows 
end 

и

class Show < ActiveRecord::Base 
    belongs_to :shownames 
end 

Использование ShowName.all работает, чтобы получить данные и Show.all тоже работает.

Итак, у меня есть 2 основных вопроса.

1) Я просто неправильно что-то неправильно или помещаю его в неправильное место? 2) Как получить доступ к названию шоу? Я знаю в другом использовании has_one, я просто использую имя лица, он работает с has_many

Любая помощь приветствуется.

+0

почему вы должны отделить имена шоу от шоу? Я имею в виду, что на каждом из шоу есть имена правильно? или это поймать многосезонные шоу? – corroded

+0

Обратите внимание, что Show.all.shownames [0] .name не имеет смысла в вашей настройке. Show.all возвращает массив, в котором имена показов не будут использоваться. – Austin

+0

@corroded каждое шоу будет иметь 1 или больше имен. Не только то, что официально называется, но и то, что поп-культура называет. – percent20

ответ

1

Вы перевернули role_to и has_many и нуждались в дополнительном подчеркивании. Попробуйте это:

class ShowName < ActiveRecord::Base 
    belongs_to :show 
end 

и

class Show < ActiveRecord::Base 
    has_many :show_names 
end 

и теперь ...

show = Show.first 
show.show_names => ["First name for first show", "Second name for second show"]