【发布时间】:2014-01-03 15:44:06
【问题描述】:
我无法将模型实例分配给另一个模型的引用属性。相关代码如下:
module Blog::Models
class Post < Base; belongs_to :user, dependent: :destroy end
class User < Base; has_many :posts end
...
class BasicFields < V 1.0
def self.up
create_table User.table_name do |t|
...
end
create_table Post.table_name do |t|
...
t.references :user
end
end
...
end
end
module Blog::Controllers
...
class PostEditN
...
def post(post_num)
@post = Post.find(post_num)
@user = User.find(@input.user)
...
@post.user = @user # Error thrown: NameError at /post/edit/1 uninitialized constant User
# @post.user_id = @user.id << This is my currently working solution
@post.save
redirect PostN, post_num
end
end
...
end
...
当我在控制台模式下使用 Camping 为 @post.user 分配一些东西时,它是成功的,但我似乎无法在控制器中完成相同的行为。我只需将@user.id 分配给Post 实例的user_id 属性即可。但是,我想弄清楚为什么备用方法在 Camping 控制台中有效,而不是在我只是运行网络服务器时有效。
【问题讨论】:
-
在将
@user分配给@post.user之前,我能够通过将nil分配给@post.user来使其工作。我仍在试图弄清楚为什么没有奇怪的变通方法的简单分配不起作用。