【发布时间】:2012-03-07 01:20:35
【问题描述】:
我现在有一个问题,不知道该怎么办。这是 关于表之间的关系以及我是否需要外国 键。
我的数据库中有两个表;用户和游戏。用户包括所有 用户信息(用户名、电子邮件、地址、密码等) 游戏 包括所有游戏信息(名称、流派、控制台用户 ID)。作为 您可能已经注意到游戏桌包含用户 ID,以便 将两者之间的关系联系起来,这是每场比赛都需要一个 关联用户。
我想做的是在每个游戏 show.html.erb 页面上,我有一个按钮 它应该向该游戏的所有者发送一封电子邮件,以便让 他们现在因为当前登录的用户有兴趣交易 游戏。
我想知道我将如何做到这一点。 user_id 是否自动链接 所有用户关联的数据或只是 id。如果不是那我怎么办 将用户电子邮件声明为外键,以便我调用 要发送给用户的电子邮件?
任何帮助将不胜感激。谢谢
克里斯托弗·琼斯
更新
嘿,我的 games_controller 显示部分中有以下内容,但它不起作用。它抛出以下错误:“chris230391@googlemail.com”的未定义方法`email':String。
def show
@game = Game.find(params[:id])
respond_to do |format|
GameTrade.game_interest(@game.user.email).deliver
format.html { redirect_to root_url }
format.json { render json: @game }
end
end
所以我将其更改为以下内容,以分解问题并找出问题所在的行,并指出该块位于第 19 行,即行 g = GameTrade.game_interest(email)。我收到以下错误:
“chris230391@googlemail.com”的未定义方法“电子邮件”:字符串
有什么想法吗?代码如下
def show
@game = Game.find(params[:id])
respond_to do |format|
user = @game.user
email = user.email
g = GameTrade.game_interest(email)
g.deliver
format.html { redirect_to root_url }
format.json { render json: @game }
end
end
以下代码是我在邮件部分中的 Game_trade.rb 的代码:
class GameTrade < ActionMailer::Base
default :from => "christopher@aol.com"
def game_interest(user)
@user = user
mail :to => user.email, :subject => "Game Interest"
end
end
【问题讨论】:
-
您是在谈论数据库中的真实 FK 还是某些 Rails 关联的
:foreign_key选项? -
嘿,我想放置一个外键,这样当我单击按钮时,它会向用户的电子邮件地址发送一封电子邮件。游戏表中不存在电子邮件字段,只有用户和我在游戏中有 user_id,但我不认为这可以访问用户电子邮件。
-
嘿,我已经更新了我上面的问题,以便更深入地了解我想要做什么。
标签: mysql ruby-on-rails migration foreign-keys