0

今のところ、私は以下を持っています:

モデル => ユーザー(名前、電子メール)

has_and_belongs_to_many :trips

モデル => トリップ(目的地 1、目的地 2)

has_and_belongs_to_many :users

validates :dest1, :dest2, :presence => true

モデル => TripsUsers (user_id, trip_id) (id => false)

belongs_to :user

belongs_to :trip

コードからわかるように、旅行モデルは宛先 1 と宛先 2 で検証されていますが、エラーは表示されていません。次のように定義されたコントローラーとビュー:

trips_controller.rb

  def new
    @user = User.find(params[:user_id])
    @trip = @user.trips.build
  end

  def create
    @user = User.find(params[:user_id])
    @trip = Trip.new(params[:trip])
    if @trip.save
      @trip.users << @user
      redirect_to user_trips_path, notice: "Success"
    else
      render :new
    end
  end

_form.html.erb

<%= simple_form_for [@user, @trip] do |f| %>
    <%= f.error_notification %>
    <%= f.input :dest1 %>
    <%= f.input :dest2 %>
    <%= f.submit "Submit" %>
<% end %>
4

1 に答える 1

-1

rails guide on presencevalidationによると、関連付けられたオブジェクトでは使用できません。カスタム検証を使用してみてください:

validate :destinations_presence

def destinations_presence
  if dest1.nil? 
    errors.add(:dest1, "missing dest1")
  elsif dest2.nil?
    errors.add(:dest1, "missing dest2")
  end
end
于 2012-05-06T10:37:29.307 に答える