如何检查Rails rich_text_field(操作文本)是否为空白?

时间:2019-07-15 00:17:03

标签: ruby-on-rails trix actiontext

我似乎找不到任何地方-控制台将字段显示为nil,但实际上操作文本存储的内容可能是“空白”。

MyModel.rich_text_field.nil?不管实际内容是否为空白,都返回false。

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法检查模型字段是否为空:

MyModel.rich_text_field.blank?

答案 1 :(得分:0)

这就是我最终处理 Action Text 字段验证以确定它们是否为空的方式。

在我的 posts_controller 中,我确保在 response_to 块中有 if @post.save

  # POST /posts or /posts.json
  def create
    @post = current_user.posts.new(post_params)

    respond_to do |format|
      if @post.save
        flash[:success] = "Post was successfully created."
        format.html { redirect_to @post }
        format.json { render :show, status: :created, location: @post }
      else
        format.html { render :new, status: :unprocessable_entity }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
  end

在我的 Post 模型中,我添加了一个带有自定义验证的属性访问器。

class Post < ApplicationRecord
  
  attr_accessor :body
  
  # Action Text, this attribute doesn't actually exist in the Post model
  # it exists in the action_text_rich_texts table                  
  has_rich_text :body

  # custom validation (Note the singular validate, not the pluralized validations)
  validate :post_body_cant_be_empty


  # custom model validation to ensure the post body that Action Text uses is not empty
   def post_body_cant_be_empty 
      if self.body.blank?
        self.errors.add(:body, "can't be empty") 
    end   
  end

end

现在将运行自定义验证以检查操作文本帖子正文是否为空,如果是错误,将在提交表单时向用户显示。