保存记录后创建新行

时间:2009-07-16 19:17:42

标签: ruby-on-rails ruby

用户提交url,通过scaffold create方法将其放入article.url中。我可以像这样解析网址:

def parse_url
  elements = @article.url.split("/")
  if(elements[0] == "http:")
    @home = elements[2] #elements[1] will be an empty string because of the // in the URL
  else
    @home = elements[0]
  end
end

我更愿意做的是在用户使用create方法保存url之后解析url,然后将此值插入到article表中数据库的新行中。

1 个答案:

答案 0 :(得分:2)

我会使用以下内容:

class Article
  attr_accessor :unparsed_url

  before_validation_on_save :parse_url

  private

  def parse_url
    return unless unparsed_url

    elements = unparsed_url.split("/")
    if(elements[0] == "http:")
      self.home = elements[2]
    else
      self.home = elements[0]
    end
  end
end

您在Rails表单中使用unparsed_url。使用这样的虚拟属性可以很好地处理表单验证。