代码之家  ›  专栏  ›  技术社区  ›  stephenmurdoch

使用自定义rake任务向模型添加代码

  •  1
  • stephenmurdoch  · 技术社区  · 15 年前

    我写了一个简单的博客插件(它实际上是一个Rails引擎)。它被设计成安装到已经设置了用户模型的应用程序中。

    为了避免我不得不打开我的用户模型和手动插入“has-many:posts”,我想写一个rake任务,自动为我做这个。

    如果我将我的引擎打包成一个gem中的发电机,那么下面的内容可能会起作用:

    def manifest
      record do |m|     
        m.insert_into "app/models/user.rb", 'has_many :posts'
      end
    end  
    

    这类事情能通过耙子任务完成吗?我环顾四周,找不到答案…提前谢谢

    3 回复  |  直到 15 年前
        1
  •  1
  •   Juan Tarquino    15 年前

    你能在你的插件中包含一个模型文件,打开用户类并添加“has-many:posts”吗?

    class User < ActiveRecord::Base
       has_many :posts
    end
    

    我认为这是可行的,因为您可以在任何时间从任何文件打开Ruby类;所以无论使用插件的项目在其模型文件夹中是否有user.rb文件,您的文件也将被加载,并且has-many将在运行时添加到用户类中。

    希望它有帮助。

        2
  •  1
  •   sosborn    15 年前

    你绝对可以通过rake任务访问你的模型。但是,您必须确保将它传递给您的环境,以便它了解您的模型。例如,

    desc"This will insert the Posts"
    
    task(:insertPosts => :environment) do
    
    #your code here
    
    end
    
        3
  •  0
  •   John Topley    15 年前

    这是一项真正修改源的任务吗?你考虑过包括一个模块吗?请详细说明您试图实现的目标,以获得正确的指导。