我有一个'发布'数据结构,我在postgres中的表名是'publication'。我从流媒体中得到一条推文并根据类TweetFetcher解析它。如何调用发布控制器将其保存到数据库? PublicationController具有标准的scrum功能(new,create,show,edit ...),其中create为:
def create
@publication = Publications.new(params[:publication])
if @publication.save
redirect_to :action => 'list'
else
@subjects = Subject.find(:all)
render :action => 'new'
end
end
我的推特代码是
class TweetFetcher
def saveTweet(parsedTweet)
pT = JSON.parse(parsedTweet)
#save here. like this?
#PublicationController.create(parsedTweet)
end
end
答案 0 :(得分:0)
在这种情况下你不应该使用你的控制器,而是你可以像这样建立你的记录:
class TweetFetcher
def saveTweet(parsedTweet)
pT = JSON.parse(parsedTweet)
publication = Publications.new
publication.sample_field = pT.sample_field
... # set additional attributes
publication.save
end
end
此外,这里有一些与您的问题没有直接关系的建议/信息,但是您应该知道的事情:
模型的类名应该是单数,因此应该是Publications
而不是Publication
。
方法和变量名称应该是蛇形而不是驼峰形式(即save_tweet
而不是saveTweet
或parsed_tweet
而不是parsedTweet
)。
首选新的哈希语法,除非您使用的是1.9以下的Ruby版本。这看起来像{ key: value }
而不是{ key => value }
。
Ruby代码的缩进通常为2个空格。
话虽这么说,我会改变你的代码:
<强> PublicationsController#创建强>
def create
@publication = Publication.new(params[:publication])
if @publication.save
redirect_to action: 'list'
else
@subjects = Subject.find(:all)
render action: 'new'
end
end
<强> TweeFetcher 强>
class TweetFetcher
def save_tweet(tweet)
parsed_tweet = JSON.parse(tweet)
publication = Publication.new
publication.sample_field = parsed_tweet.sample_field
... # set additional attributes
publication.save
end
end