如果我的模型如下所示:
class Post < ActiveRecord::Base
validate :content, presence: true, on: :post_create_action
end
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
if @post.validate(:post_index_action) && @post.save
redirect_to post_path(@post)
end
end
end
我知道@ post.validate不能像我在代码中描述的那样工作,但我想知道这是否可以在rails中使用。
答案 0 :(得分:3)
答案 1 :(得分:0)
您可以使用lambda
<强>模型/ post.rb 强>
class Post < ActiveRecord::Base
attr_accessor :post_creation
validate :content, presence: true, if: lambda { self.post_creation == true }
end
<强>控制器/ posts_controller.rb 强>
class PostsController < ApplicationController
def create
@post = Post.new(post_params)
if @post.save
redirect_to post_path(@post)
else
# Handle the validation errors
end
end
private
def post_params
params.require(:post).permit(....).merge(post_creation: true)
end
end