簡體   English   中英

調用“結構”以使用Rails保存在postgres中

[英]Call 'structure' to save in postgres using rails

我有一個“ publication”數據結構,而我在postgres中的表名是“ publications”。 我從流中獲得了一條推文,並根據TweetFetcher類對其進行了解析。 如何調用發布控制器將其保存到數據庫? PublicationController具有標准的Scrum功能(新建,創建,顯示,編輯...),其中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

在這種情況下,您不應該使用控制器,而是可以像這樣建立記錄:

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

此外,這是一些與您的問題沒有直接關系的建議/信息,但您應該了解以下幾點:

  1. 你的模型的類名應該是單數,所以不是Publications ,應當Publication

  2. 方法和變量名應采用蛇形而不是駝峰式(即, save_tweet代替saveTweetparsed_tweet代替parsedTweet )。

  3. 首選新的哈希語法,除非您當然使用的是低於1.9的Ruby版本。 看起來像{ key: value }而不是{ key => value }

  4. 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM