访问控制器中的模型方法

时间:2012-12-05 19:00:35

标签: ruby-on-rails

我的MVC逻辑可能是错的,但我要做的是从视图中获取用户输入并将该信息传递给数据库。但在此之前,我想确定通过分析一些正则表达式(然后将类型传递给数据库以及内容)提交的数据类型。

但由于某种原因,我得到一个错误(未定义的方法`get_type'),我从模型调用的方法不存在。我认为这个方法应该在模型中是错误的吗?

控制器:

  def create
    @post = Post.new(
      content: params[:post][:content]
      type: get_type(params[:post][:content])
    )
    @post.save
  end

型号:

  def get_type
    if self.content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      return 'image'
    end
  end

巨型免责声明:几天前我刚刚开始使用ruby(以及导轨):)

1 个答案:

答案 0 :(得分:3)

您只需要调用模型:

  def create
    @post = Post.new(
      content: params[:post][:content]
      type: Post.get_type(params[:post][:content])
    )
    @post.save
  end

并添加'self'关键字:

  def self.get_type(content)
    if content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      return 'image'
    end
  end

但我认为您应该在before_create声明中设置类型

class Post < ActiveRecord::Base
  #...
  before_create :set_type
  #...

  def set_type
    if self.content =~ /(\.jpg|\.png|\.bmp|\.gif)$/
      self.type = 'image'
    end
  end
end