如果params [:object] .nil?:object = value

nii*_*lai 0 ruby ruby-on-rails ruby-on-rails-4

我试图这样做,如果有人发一个没有标题的帖子,帖子将获得默认标题.

到目前为止我已经尝试过了

调节器

def create
@post = Post.create(post_params)
  if @post.title.nil?
    @post.update(:title => 'Unnamed')
  else
    # DO NOTHING
  end
end
Run Code Online (Sandbox Code Playgroud)

调节器

def create
  if params[:title].nil?
    params[:title] == 'Unnamed'
    @post = Post.create(post_params)
  else
    @post = Post.create(post_params)
  end
end
Run Code Online (Sandbox Code Playgroud)

但它不起作用.什么想法我做错了什么?提前致谢.

spi*_*ann 6

我认为这是模型的责任,使自己保持有效状态.此外,如果多个控制器更新相同型号的更改,则根据DRY原则,它是最佳解决方案.因此我会在Post模型中做这样的事情:

before_validation :set_default_title

private
def set_default_title
  self.title = title.presence || 'Unnamed'
end
Run Code Online (Sandbox Code Playgroud)