Отношения с базой данных Rails - PullRequest
0 голосов
/ 26 апреля 2010

У меня есть три модели, которые я хочу взаимодействовать друг с другом.

Касе, Персона и и Компания.

Я (думаю) настроил отношения правильно:

class Kase < ActiveRecord::Base
#HAS ONE COMPANY
has_one :company

#HAS MANY PERSONS
has_many :persons


class Person < ActiveRecord::Base
belongs_to :company

class Company < ActiveRecord::Base
has_many :persons
def to_s; companyname; end

Я поместил поле выбора в представление создания нового Kase и представление создания нового лица следующим образом:

<li>Company<span><%= f.select :company_id, Company.all %> </span></li>

Все вышеперечисленное успешно показывает выпадающее меню, динамически заполняемое названиями компаний в компаниях.

То, что я пытаюсь сделать, это отобразить контакт записи Компании в kase и персонаже show.html.erb.

Например, если у меня есть компания под названием «Acme, Inc.» и создайте новый Kase под названием «Случайный случай» и выберите на странице создания нового случая «Acme, Inc.» из компаний выпадающее меню. Затем я хотел бы отобразить «Acme, Inc» вместе с «Acme, Inc. Mobile» и т. Д. В «Случайном случае» show.html.erb.

Надеюсь, для кого-то это имеет смысл!

Спасибо

Danny

РЕДАКТИРОВАТЬ: kases_controller

def show
@kase = Kase.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @kase }
  format.pdf { render :layout => false }

  prawnto :prawn => { 
             :background => "#{RAILS_ROOT}/public/images/jobsheet.png",

             :left_margin => 0, 
             :right_margin => 0, 
             :top_margin => 0, 
             :bottom_margin => 0, 
             :page_size => 'A4' }
end   end

Ответы [ 2 ]

3 голосов
/ 26 апреля 2010

Я думаю, что ваши модельные ассоциации неполные на основании того, что вы опубликовали в своем вопросе:

class Kase < ActiveRecord::Base
  has_one :company
  has_many :people # Rails should handle the correct plural here
end

class Company < ActiveRecord::Base
  has_many :people
  belongs_to :kase
end

class Person < ActiveRecord::Base
  belongs_to :company
  belongs_to :kase
end

При правильно настроенных связях вы можете получить доступ к атрибутам компании для данного случая:

kase.company.name
kase.company.mobile

- или для данного лица:

person.company.name
person.company.mobile

Вы даже можете попасть в компанию через дело человека:

person.kase.company.name # etc...
0 голосов
/ 26 апреля 2010

Если я правильно понимаю, ваш файл шоу будет содержать что-то вроде этого, чтобы показать номер мобильного телефона:

# in app/views/kases/show.html.erb
<h1><%=h kase.name %></h1>

<h2>Company Information</h2>
<ul>
  <li>Company Name: <%=h kase.company.name %></li>
  <li>Company Mobile: <%=h kase.company.mobile_phone %></li>
</ul>

Попробуй, посмотри, хватит ли этого.

...