【发布时间】:2019-11-18 07:51:36
【问题描述】:
我正在构建一个带有 Active Record 的 sinatra 应用程序。这个想法本质上是拥有一个自定义电子邮件应用程序。这里我有模型用户和消息。一个User has_many :messages 和一个Message belongs_to :user。这可能是我遇到问题的地方。我还为Message belongs_to :user 和has_many :users 设置了它。
这是模型
现在,当我在动作控制器中创建消息时,我正尝试使用 shove 方法将新消息放入用户的消息数组中。如果我尝试使用params( @user = User.find(id) 中的所有用户ID 一次与多个用户“共享”此消息,然后user.messages << @new_message) 最后一个用户将把消息存储在它的.messages 数组中。但是只有最后一个要迭代。
class Message < ActiveRecord::Base
belongs_to :user
has_many :users
end
class User < ActiveRecord::Base
validates :username, presence: true, uniqueness: true
has_secure_password
has_many :messages
end
这个想法是作者“拥有”消息,但可以与许多用户分享。这是表格
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :username
t.string :email
t.string :password_digest
end
end
end
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.string :message
t.string :author
t.integer :user_id
t.integer :user_ids
t.integer :share_id
t.string :title
t.timestamps
end
end
end
# action controller
new_params = {}
new_params[:message] = params["message"]
new_params[:title] = params["title"]
new_params[:author] = params["author"]
new_params[:user_id] = params["user_id"]
@message = Message.create(new_params)
# @share = Share.create
# @message.share_id = @share.id
response.map do |x|
x.messages << @message
x.save!
end
@all = User.all
@user = User.find_by(username: @message.author)
erb :"/user/sent"
我很确定这是因为我的关联设置不正确。
【问题讨论】:
标签: ruby activerecord sinatra sinatra-activerecord