Ruby on rails 简单Rails模型-向用户订阅线程 classtodo“用户” 有很多:注释,:依赖=>:销毁 拥有多个:订阅者,:class\u name=>“用户” 终止 类用户'Todo',:外键=>:Assignment\u id,:dependent=>:destroy 有很多:评论,:通过=>:待办事项 拥有多个:订阅,:至=>:TODO,:反向=>:subscribers 终止
我正试图让用户订阅todos 我希望我能做@todo.subscribers并得到一份用户列表 问题:Ruby on rails 简单Rails模型-向用户订阅线程 classtodo“用户” 有很多:注释,:依赖=>:销毁 拥有多个:订阅者,:class\u name=>“用户” 终止 类用户'Todo',:外键=>:Assignment\u id,:dependent=>:destroy 有很多:评论,:通过=>:待办事项 拥有多个:订阅,:至=>:TODO,:反向=>:subscribers 终止,ruby-on-rails,Ruby On Rails,我正试图让用户订阅todos 我希望我能做@todo.subscribers并得到一份用户列表 问题: 我的班级关系正确吗? 如果有订阅服务器,我需要什么数据库结构? 如果有更好的方法,请让我知道 这是一段代码,可以满足您的需要,我简化了您的模型,但它应该可以回答您的问题 该示例可以在不使用rails的情况下自行运行,如果要与rails一起使用,只需忽略文件头即可 class Todo < ActiveRecord::Base belongs_to :user belongs_
- 我的班级关系正确吗?
- 如果有订阅服务器,我需要什么数据库结构?
- 如果有更好的方法,请让我知道
- 这是一段代码,可以满足您的需要,我简化了您的模型,但它应该可以回答您的问题
该示例可以在不使用rails的情况下自行运行,如果要与rails一起使用,只需忽略文件头即可
class Todo < ActiveRecord::Base
belongs_to :user
belongs_to :assignee, :class_name => "User"
has_many :comments, :dependent => :destroy
has_many :subscribers, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :todos
has_many :assigned_todos, :class_name => 'Todo', :foreign_key => :assignee_id, :dependent => :destroy
has_many :comments, :through => :todos
has_many :subscriptions, :through => :todos, :inverse_of => :subscribers
end
这是一个你想要的代码,我简化了你的模型,但它应该能回答你的问题 该示例可以在不使用rails的情况下自行运行,如果要与rails一起使用,只需忽略文件头即可
class Todo < ActiveRecord::Base
belongs_to :user
belongs_to :assignee, :class_name => "User"
has_many :comments, :dependent => :destroy
has_many :subscribers, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :todos
has_many :assigned_todos, :class_name => 'Todo', :foreign_key => :assignee_id, :dependent => :destroy
has_many :comments, :through => :todos
has_many :subscriptions, :through => :todos, :inverse_of => :subscribers
end
您是否尝试通过控制台运行此命令,以查看其行为是否符合您的要求?是的,我没有为订阅服务器添加表,因为我不确定模式应该是什么。他们订阅的是什么?待办事项?你应该把它当作一个叫做ToDouser的模型来对待;所以我需要创建另一个包含用户和TODO的表?该调用什么表,我可以删除主键吗?@cjm2671您找到过解决方案吗?您是否尝试过通过控制台运行该表以查看其行为是否符合您的要求?是的,我没有为订阅服务器添加表,因为我不确定模式应该是什么。他们订阅了什么?待办事项?你应该把它当作一个叫做ToDouser的模型来对待;所以我需要创建另一个包含用户和TODO的表?这个表应该被称为什么,我可以删除主键吗?@cjm2671你找到解决这个问题的方法了吗?
# Dump of table subscriptions
# ------------------------------------------------------------
CREATE TABLE `subscriptions` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`todo_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# Dump of table todos
# ------------------------------------------------------------
CREATE TABLE `todos` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# Dump of table users
# ------------------------------------------------------------
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;