2015-07-19 76 views
1

我在我的模特里有啾啾字段。 当用户创建一个新的他可以签出一个复选框,也将发布到twitter。如何仅允许post_to_twitter(创建时或更新时)?

after_create :post_to_twitter, if: :tweeted 

如果该复选框已于检查创建,它会从用户的帖子其他更新隐藏。

<% unless @post.tweeted? %> 
    <%= f.input :tweeted, inline_label: "Tweet this", as: :boolean %> 
<% end %> 

但是,如果用户没有检查它创建我怎么能允许它在更新检查一次。

所以张贴到Twitter只能执行上一次创建更新。发布推文后,应该隐藏复选框。

after_create :tweet_with_condition 

def tweet_with_condition 
if tweeted_changed? && tweeted.present? 
    # post to twitter code blocks or method 
end 
end 

在你的表格,你应该这样做如下:

回答

2

在模型下面是非常容易的。你可以在哪里设置2条件。一个是检查@post是否是新记录,或者该帖子还没有发送推文。

<%= f.input :tweeted, inline_label: "Tweet this", as: :boolean if @post.new_record? or [email protected]? %> 
+1

它在创建时发布,但更新没有任何反应。但我认为这几乎是我需要的。 – kirqe

+1

哦,当我为after_create和after_update调用tweet_with_condition时,它工作得很好。谢谢! – kirqe

0

您可以检查用户是否通过检查created_at和的updated_at时间戳后是相同的更新后的第一次。

<% if [email protected]? && (@post.created_at == @post.updated_at) %> 
    <%= f.input :tweeted, inline_label: "Tweet this", as: :boolean %> 
<% end %> 
+0

我知道如何根据条件隐藏复选框。我不知道如何正确设置我的模型。 – kirqe

相关问题