我写了一个简单的博客插件(它实际上是一个rails引擎)。它旨在安装到已经设置了用户模型的应用程序中。
为了避免打开我的用户模型并手动插入“has_many:posts”,我想写一个rake任务,自动为我做这个。
如果我将我的引擎作为生成器封装在gem中,那么以下内容可能会起作用:
def manifest
record do |m|
m.insert_into "app/models/user.rb", 'has_many :posts'
end
end
这样的事情可以通过rake任务完成吗?我环顾四周,找不到答案......提前谢谢
答案 0 :(得分:1)
您绝对可以通过rake任务访问您的模型。您必须确保将其传递给您的环境,以便了解您的模型。例如,
desc"This will insert the Posts"
task(:insertPosts => :environment) do
#your code here
end
答案 1 :(得分:1)
你可以在你的插件中包含一个模型文件来打开User类并添加“has_many:posts”吗?
class User < ActiveRecord::Base
has_many :posts
end
我认为这样可行,因为您可以随时从任何文件打开Ruby类;因此,无论使用您的插件的项目是否在其模型文件夹中都有user.rb文件,您的文件也将被加载,并且has_many将在运行时添加到User类。
希望它有所帮助。
答案 2 :(得分:0)
这是一个实际修改源是否合适的任务?你考虑过包含一个模块吗?请详细说明您正在努力获得的正确指导。