如何映射命名空间模型?

时间:2015-12-26 20:04:56

标签: ruby-on-rails ruby

我做到了:

func animationBackground(view:UIView,animationTime:Float){

     self.fillView.transform = CGAffineTransformIdentity

     UIView.animateWithDuration(NSTimeInterval(animationTime), delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: {
                view.transform = CGAffineTransformMakeTranslation(0.0,  self.screenSize.height-67)
        },completion:nil)
    }

让它发挥作用

rails g model User
rails g model User/Deal

我该怎么办

使用

# model/user.rb module User def self.table_name_prefix 'user_' end class User < ActiveRecord::Base self.table_name = 'users' end end # model/user/deal.rb class User::Deal < ActiveRecord::Base end

代替

User.create(name: 'jason')

始终使用User::User.create(name: 'jason')过于复杂。

2 个答案:

答案 0 :(得分:1)

请执行以下操作:

#app/models/user.rb
class User < ActiveRecord::Base
   has_many :deals, class_name: "User::Deal"
end

#app/models/user/deal.rb
class User::Deal < ActiveRecord::Base
  belongs_to :user
end

这样,您就可以致电:

@user = User.create name: "Jason"
@user.deals.create title: "2 for 1"

不是你想要的答案,所以如果你愿意,我会删除。老实说,我认为你用模块等过度复杂化了。

<强>更新

根据docs,您的嵌套模型将自动查找module_class表名:

  

嵌套类的表名前缀为父表名的单数形式。不考虑附上模块。

file                  class               table_name
invoice.rb            Invoice::Lineitem   invoice_lineitems

然而,这些例子让我很困惑。

如果它不起作用,您可以在课程上使用self.table_prefix

#app/models/user/deal.rb
class User::Deal < ActiveRecord::Base
   def self.table_name_prefix
      "user_"
   end
end

答案 1 :(得分:0)

您已创建module User但有一些目的(我认为)。也许你的任务需要这样的并发症&#39;? 如果在某些代码中您要将User::User替换为User

module User
  class AnotherUser
    def create
      User.create(name: 'jason')
    end
  end
end

注意:class AnotherUser位于User命名空间下!要从外部模块拨打电话,您需要使用User::AnotherUser