如何发送与模型无关的值

时间:2014-04-06 03:29:03

标签: ruby-on-rails twitter

我的Post模型具有titlecontent属性。

我想在用户创建这样的帖子时发布推文。

<%= form_for @post do |f| %>
  <%= f.text_field :title %>
  <%= f.text_area :content %>
  <%= f.check_box :with_tweet %> # Error
  <%= f.text_field :tweet %> # Error
<% end %>

此代码失败,因为with_tweet没有tweetPost属性。 我不认为查询字符串是这样的好主意情况。

我应该如何发送与模型无关的信息?

2 个答案:

答案 0 :(得分:3)

将它们定义为虚拟属性:

class Post < ActiveRecord::Base
  ...
  attr_accessor :with_tweet, :tweet
  ...
end

attr_accessor将为with_tweettweet提供getter和setter方法,然后您可以通过@post对象访问这些方法。

答案 1 :(得分:2)

继Vee的回答之后,让我解释一下你为什么需要它:

  

Rails模型中的每个attribute都是使用Ruby getter & setter的结果 - 意味着您的模型的属性是   基本上只是Ruby对象的一部分,在你的类时构建   初始化

     

你遇到的问题是Ruby on Rails没有构建任何其他东西   除了数据库中的属性之外的其他属性,这意味着如果您愿意   跟踪额外数据,您必须使用virtual attributes来发布   该类知道填充不在db

中的那些      

attr_accessor用于定义那些额外属性