2011-11-21 4 views
1

안녕하세요, 저는 2 가지 모델 클라이언트와 식사를했습니다.Acces STI 유형은보기 및 컨트롤러를 생성합니다.

client.rb

class Client < ActiveRecord::Base 

has_many :meals 
accepts_nested_attributes_for :meals 

end 

meal.rb

class Meal < ActiveRecord::Base 
belongs_to :client 
end 

class Lunch < Meal 
end 

class Dessert < Meal 
end 

인/클라이언트/_form.html.erb

<%= simple_form_for @client do |f| %> 

    <%=f.input :name %> 
    <%=f.input :adress %> 
    <%=f.input :telephone %> 

    <%= f.simple_fields_for :meal do |m| %> 
    <%=m.input :type %> 
    <%end%> 
    <% end %> 

때 나는 클라이언트 'index.html.erb에 표시되지 않는 식사 유형을 저장합니다 (비어 있음). 무슨 문제입니까? 나는 단순히이 같은 meal.rb의 열 상속을 설정해야

def create 
    @client = Client.new(params[:client]) 

    respond_to do |format| 
    if @client.save 
    format.html { redirect_to @client, notice: 'Operation was successfully created.' } 
    format.json { render json: @client, status: :created, location: @client } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @client.errors, status: :unprocessable_entity } 
    end 
    end 
end 

답변

0

물질 : 어떻게 다음 cotroller와 함께. (예 : "점심 식사") 그에게 식사 유형을 제공하여 클라이언트를 만들 수 있습니다 :

class Meal < ActiveRecord::Base 

    set_inheritance_column do 
     "type" + "_id" 
    end 

belongs_to :client 
end 

class Lunch < Meal 
end 

class Dessert < Meal 
end 

이제 클라이언트를 만들 때 식사 유형을 선택할 수 있습니다. Anan 덕분에 solution이 그에게서 온 것입니다.