2014-09-05 3 views
0

У меня есть две модели Сделки и рестораныВыбор значения для уникального идентификатора на модели

Я хочу показать сделки для каждого ресторана. Я не хочу, чтобы они были связаны на :restaurant_id, скорее я хочу, чтобы они были связаны по :restaurant_name.

То, что я не могу понять, как связать их на :restaurant_name в контроллере

restaurant controller 

def show 
    @restaurant = Restaurant.find(params[:id]) 
    @deals = @restaurant.deals 
end 



show.html.erb 

<% restaurant.deals.each do |deal| %> 
     <h2><center><%= deal.day %></center></h2> 
<% end %> 

Любые идеи?

+1

Вы имеете в виду что-то вроде этого? http://stackoverflow.com/questions/17755815/ruby-on-rails-find-by-field-other-than-id – Matt

+0

@Matt, я думаю [этот вопрос] (http://stackoverflow.com/ вопросы/17755815/ruby-on-rails-find-by-field-other-than-id) относится к 'find', но OP задает вопрос о' belongs_to' –

ответ

0

Если вы хотите, чтобы я мог сказать, что это плохая идея, потому что, если имя изменяет цепочку разрывов.

class Restaurant 
    has_many :deals, foreign_key: "restaurant_name", primary_key: "name" 
end 
class Deals 
    belongs_to :restaurant, foreign_key: "restaurant_name", primary_key: "name" 
end 

Это предполагает, что модель Restaurant использует name вместо restaurant_name но концепция has_manyforeign_key будет ключом для использования в другой таблице и primary_key будет ссылка в текущей таблице. belongs_toforeign_key будет ключом для использования в текущей таблице, а primary_key будет ключом в другой таблице.

1

Я хочу показать сделки для каждого ресторана. Я не хочу, чтобы они были связаны: restaurant_id, скорее я хочу, чтобы они были связаны: имя_файла.

С точки зрения базы данных, предполагая, что реляционная база данных, ваш deals таблица будет иметь внешний ключ что ссылкиrestaurants. Теперь, когда вы знаете, как это назвать, эта часть документации belongs_to должна ответить на ваш вопрос:

: foreign_key

Укажите внешний ключ, используемый для объединения. По умолчанию это угадывается быть название ассоциации с «_ID» суффиксом ...

Теперь, когда вы знаете, как реализовать свой ассоциацию, я должен отметить, что многие рестораны в мир имеет одно и то же имя, поэтому restaurant_name может быть плохой выбор внешнего ключа.

+0

+1 для методологии расчета и для указания что это, вероятно, плохая концепция дизайна, поскольку я полностью согласен на обоих фронтах. Хотя я и указал ответ. – engineersmnky

+0

Я согласен с плохим дизайном, его не столько, что я собираюсь сделать это таким образом, насколько это возможно, я хочу знать, как это сделать. Спасибо хоть. – Seal

+0

Если я не добавляю по имени, чем каждый раз, когда я добавляю сделку, я должен помнить ресторан_ид? – Seal

Смежные вопросы