小编mau*_*ice的帖子

如何使用transformRequest和transformResponse修改$ resource的数据?

我正在使用符合JSONAPI的 API,其中一种格式要求是所有数据(传入和传出)必须包装在data对象中.所以我的请求看起来像:

{
  "data": {
    "email": "email@example.com",
    "password": "pass",
    "type": "sessions"
  }
}
Run Code Online (Sandbox Code Playgroud)

我的回答如下:

{
  "data": {
    "user_id": 13,
    "expires": 7200,
    "token": "gpKkNpSIzxrkYbQiYxc6us0yDeqRPNRb9Lo1YRMocyXnXbcwXlyedjPZi88yft3y"
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,当发出新的会话请求时,我有:

$scope.signin = ->
  session = new Session
    email: $scope.user.email
    password: $scope.user.password

  session.$save()

  console.log session
  console.log session.token
  if not session.token
    alert 'Invalid Login'
  else
    $rootScope.session_token = session.token
    $state.go 'app.dashboard'
Run Code Online (Sandbox Code Playgroud)

而我Session的工厂看起来像:

angular.module('webapp').factory 'Session', [
  '$resource'
  ($resource) ->
    $resource 'http://localhost:9500/v1/sessions',
      id: '@id'
    ,
      save:
        method: 'POST'
        transformRequest: (data) ->
          result =
            data: …
Run Code Online (Sandbox Code Playgroud)

coffeescript angularjs

16
推荐指数
1
解决办法
4871
查看次数

Rails - 如何强制关联使用别名表名

p = Patient.find(30)

p.patient_problems
Run Code Online (Sandbox Code Playgroud)

上面的代码生成以下查询

SELECT `patient_problem`.* FROM `patient_problem` WHERE `patient_problem`.`patient_id` = 30 AND (`patient_problem`.`record_status_id` = 1)
Run Code Online (Sandbox Code Playgroud)

但有没有办法分配/使用别名table_name之类的

p.patient_problems(:alias=>'p1') # just for Ex.. This code will not work
p.patient_problems(:alias=>'p2') # just for Ex.. This code will not work
Run Code Online (Sandbox Code Playgroud)

因此它将生成以下查询

SELECT `p1`.* FROM `patient_problem` AS `p1` WHERE `p1`.`patient_id` = 30 AND (`p1`.`record_status_id` = 1)

SELECT `p2`.* FROM `patient_problem` AS `p2` WHERE `p2`.`patient_id` = 30 AND (`p2`.`record_status_id` = 1)
Run Code Online (Sandbox Code Playgroud)

附加信息

我的问题是当我尝试使用连接时

p.patient_problems(:所有,:联接=>连接)

我收到这个错误

ActionView::Template::Error (Mysql2::Error: Not unique table/alias: 'patient_problem': SELECT `patient_problem`.* FROM …
Run Code Online (Sandbox Code Playgroud)

mysql activerecord ruby-on-rails

10
推荐指数
1
解决办法
5338
查看次数