我對Ruby和Rails相當新,並沒有內部化它很多。我面臨的問題似乎應該很容易解決,但對我來說這並不簡單。如果我的一些術語不準確,我很抱歉。如何更新表中的記錄與當前記錄的ID
版本:Rails 4.2.0 |紅寶石2.1
我有機型主題,郵政 & 簡介。 帖子嵌套在主題,所以當我create
一個帖子,我能夠與subject_id
更新帖子表所示:嵌套下
def create
@subject = Subject.find(params[:subject_id])
@post = current_user.posts.build(params.require(:post).permit(:title, :body))
@post.subject = @subject
...
綜述,並且屬於一個帖子。當創建一個摘要我想更新的帖子表summary_id
。我無法將自己的頭圍繞在如何去做,也無法找出Stack Overflow或其他地方。
如果它是一個SQL命令,並且當前帖子的id
爲23,當前簡介的id
爲9,則它將類似於UPDATE posts SET posts.synopsis_id = 9 WHERE posts.id = 23
。
相關的控制器,模型和模式信息如下。讓我知道是否需要提供更多信息。
控制器:
synopses_controller.rb
def create
@subject = Subject.find(params[:subject_id]) #find the Subject id
@post = Post.find(params[:post_id]) #find the post id
@synopsis = Synopsis.new(params.require(:synopsis).permit(:name, :description))
#UPDATE THE POST WITH SYNOPSIS_ID!
if @synopsis.save
flash[:notice] = "Synopsis was saved."
redirect_to [@subject, @post, @synopsis] #go to the Synopsis page
else
flash[:error] = "There was an error saving the Synopsis. Please try again."
render :show
end
end
型號:
synopsis.rb
class Synopsis < ActiveRecord::Base
belongs_to :post
end
post.rb
class Post < ActiveRecord::Base
has_one :synopsis
has_many :comments
belongs_to :user
belongs_to :subject
end
模式:
schema.rb
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "subject_id"
t.integer "synopsis_id"
end
create_table "synopses", force: :cascade do |t|
t.string "name"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
看起來不錯,我會給它一個鏡頭。仍然與語法摔跤。 – 2015-03-19 02:53:11