Attr_accessor使用表名

时间:2015-04-23 10:13:31

标签: ruby-on-rails ruby database devise attr-accessor

我在rails 4中遇到“attr_accessor”问题

我有一个有很多关联的模型,当我使用attr_accessor时,我把field_name但是我的关联我有很多具有相同字段名的表。

例如

class User < ActiveRecord::Base
    has_one :agent
    has_one :language
    attr_accessor :code
end

但我有一个字段:代理表和语言表中的代码。 我试图在互联网上找到解决方案,但没有成功

有没有办法指定表名?

2 个答案:

答案 0 :(得分:1)

您可以使用这些方式从code模型

获取特定user模型
class User < ActiveRecord::Base
    has_one :agent
    has_one :language
    delegate :code, to: :agent, prefix: true, allow_nil: true
    delegate :code, to: :language, prefix: true, allow_nil: true
end

举个例子:

现在您可以访问User.first.agent_code agent模型User.first.language_code了解language模型

code

您可以按特定型号明智地访问特定的app.factory('userService',['$rootScope', "$timeout", function($rootScope, $timeout){ var user = {}; return { getFirstname : function () { return user.firstname; }, setFirstname : function (firstname) { user.firstname = firstname; $timeout(function(){ $rootScope.$broadcast("updates"); }, 1000) } } }]); app.controller('MainCtrl',['userService','$scope','$rootScope', function(userService,$scope,$rootScope) { userService.setFirstname("bharat"); $scope.name = userService.getFirstname(); $rootScope.$on("updates",function(){ $scope.name = userService.getFirstname(); }); }]); app.controller('one',['userService','$scope', function(userService,$scope) { $scope.updateName=function(){ userService.setFirstname($scope.firstname); } }]);

答案 1 :(得分:-1)

要明确指定表名,请使用

class User < ActiveRecord::Base
    self.table_name = "table_name"
end